﻿Imports System.Data
Imports System.Data.OleDb
Imports validaciones.metodos

Public Class Empleados

    Public validar As New validaciones.metodos
    Public conexion As New OleDb.OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0; Data Source=nuevozoo.accdb")

    Private Sub BotonesHabilitados(ByVal modo As Boolean)
        b_añadiremp.Enabled = modo
        b_eliminaremp.Enabled = modo
        b_modificaremp.Enabled = modo
        b_nuevoemp.Enabled = modo

    End Sub

    Private Sub cargarDatosEmp()
        'textboxs de codigos estan inhabilitados
        text_codemp.Enabled = False

        'EMPLEADOS---------------------------------------------------------------------

        'para empleados
        Dim adaptador As New OleDbDataAdapter("select * from empleados order by cod_empleado", conexion)
        Dim miDataset As New DataSet

        'limpiar DataBlindings para que no de error 
        text_codemp.DataBindings.Clear()
        text_nombreemp.DataBindings.Clear()
        text_passemp.DataBindings.Clear()

        'rellenar datagriview
        adaptador.Fill(miDataset, "empleados")
        DataGridViewEmp.DataSource = miDataset
        DataGridViewEmp.DataMember = "empleados"

        'cambiar tamaño de las columnas
        DataGridViewEmp.Columns("nombre").Width = 122
        DataGridViewEmp.Columns("contraseña").Width = 120

        'cambiar nombre de las cabeceras de la tabla
        DataGridViewEmp.Columns("nombre").HeaderText = "Nombre"
        DataGridViewEmp.Columns("contraseña").HeaderText = "Contraseña"

        'ocultar columna de codigo
        DataGridViewEmp.Columns("cod_empleado").Visible = False

        'rellenar textbox
        text_codemp.DataBindings.Add("text", miDataset, "empleados.cod_empleado")
        text_nombreemp.DataBindings.Add("text", miDataset, "empleados.nombre")
        text_passemp.DataBindings.Add("text", miDataset, "empleados.contraseña")

    End Sub

    Private Sub VolverToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VolverToolStripMenuItem.Click
        Me.Close()
        GestionGeneral.Show()
    End Sub

    Private Sub Empleados_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        cargarDatosEmp()

    End Sub


    Private Sub b_añadiremp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_añadiremp.Click
        'sacar ultimo codigo de empleados usado
        Dim cmd As New OleDbCommand("select max(cod_empleado) from empleados", conexion)
        conexion.Open()
        Dim a As Object = cmd.ExecuteScalar
        Dim codMaxUsado As String = a.ToString
        Dim codNuevo As Integer = codMaxUsado + 1 'codigo del nuevo registro

        'introducir nuevo registro
        If text_nombreemp.Text <> "" And text_passemp.Text <> "" Then
            If validar.usuario(text_nombreemp.Text) And text_nombreemp.Text.Length >= 4 Then
                If validar.contraseña(text_passemp.Text) And text_passemp.Text.Length >= 4 Then
                    Dim myCommand As OleDbCommand
                    myCommand = New OleDbCommand("INSERT INTO empleados VALUES(" & codNuevo & ",'" & text_nombreemp.Text & "','" & text_passemp.Text & "' )", conexion)
                    myCommand.ExecuteNonQuery()
                Else
                    MsgBox("La contraseña sólo puede tener letras y números, empezar por letra y al menos tener 4 caracteres", , "Error")
                End If
            Else
                MsgBox("El empleado tiene que tener entre 4 y 16 números o letras y no empezar por números", , "Error")
            End If
        Else
            MsgBox("Los campos no pueden estar vacíos", , "Error")
        End If

        conexion.Close()
        cargarDatosEmp()

        'deshabilito el boton añadir nuevamente y habilito los datagridview y demas botones
        BotonesHabilitados(True)
        b_añadiremp.Enabled = False
        DataGridViewEmp.Enabled = True

    End Sub

    Private Sub b_nuevoemp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_nuevoemp.Click
        'bloqueo el datagridview para que no se pueda modificar a pincho
        DataGridViewEmp.Enabled = False

        'desbloqueo el boton añadir que viene bloqueado por defecto dejando el resto bloqueados
        BotonesHabilitados(False)
        b_añadiremp.Enabled = True

        text_codemp.Text = "Se autorrellena"
        text_nombreemp.Text = ""
        text_passemp.Text = ""

    End Sub

    Private Sub b_eliminaremp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_eliminaremp.Click
        'borrar empleado seleccionado
        Dim res As Integer
        res = MsgBox("¿Está seguro de borrar el empleado?", MsgBoxStyle.YesNo, "Aviso")
        If res = vbYes Then
            conexion.Open()
            Dim myCommand As OleDbCommand
            myCommand = New OleDbCommand("delete from empleados where cod_empleado = " & text_codemp.Text, conexion)
            myCommand.ExecuteNonQuery()
            conexion.Close()

            cargarDatosEmp()
        End If
    End Sub

    Private Sub b_modificaremp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_modificaremp.Click
        'modificar el empleado seleccionado
        Dim res As Integer

        If text_nombreemp.Text <> "" And text_passemp.Text <> "" Then
            If validar.usuario(text_nombreemp.Text) And text_nombreemp.Text.Length >= 4 Then
                If validar.contraseña(text_passemp.Text) And text_passemp.Text.Length >= 4 Then
                    res = MsgBox("¿Está seguro de modificar el empleado?", MsgBoxStyle.YesNo, "Aviso")
                    If res = vbYes Then
                        conexion.Open()
                        Dim myCommand As OleDbCommand
                        myCommand = New OleDbCommand("update empleados set nombre ='" & text_nombreemp.Text & "', contraseña = '" & text_passemp.Text & "' where cod_empleado = " & text_codemp.Text, conexion)
                        myCommand.ExecuteNonQuery()
                        conexion.Close()
                    End If
                Else
                    MsgBox("La contraseña sólo puede tener letras y números, empezar por letra y al menos tener 4 caracteres", , "Error")
                End If
            Else
                MsgBox("El empleado tiene que empezar por letra y tener entre 4 y 16 números o letras con posibilidad de guiones, barras bajas y puntos entre ellos", , "Error")
            End If
        Else
            MsgBox("Los campos no pueden estar vacíos", , "Error")
        End If
        cargarDatosEmp()
    End Sub

End Class